package app;


import java.util.ArrayList;
import java.util.List;

class SymbolicAttribute extends Attribute {
	private List<SymbolicValue> values;
	
	public SymbolicAttribute() {
		this.type = AttributeType.SYMBOLIC;
		this.values = new ArrayList<SymbolicValue>();
	}
	
	public SymbolicAttribute(String name) {
		this();
		this.name = name;
	}
	
	public List<SymbolicValue> getValues() {
		return values;
	}
	
	public int noValues() {
		return values.size();
	}
	
	public void addValue(SymbolicValue newValue) {
		if(! values.contains(newValue)) {
			values.add(newValue);
		}
	}
	
	public SymbolicValue addValue(String str) {
		for (SymbolicValue value : values) {
			if (str.equals(value.getStringValue()))
				return value;
		}
		
		SymbolicValue newValue = new SymbolicValue(values.size(), str);
		values.add(newValue);
		
		return newValue; 
	}
	
	public SymbolicValue getValue(int index) {
		if (index < 0 || index > values.size())
			throw new IllegalArgumentException("Wrong index");
		
		return values.get(index);
	}
	
	public SymbolicValue findValue(String strValue) {
		for (SymbolicValue value : values) {
			if (strValue.equals(value.getStringValue()))
				return value;
		}
		
		// value not found
		return null;
	}
	public void printValues() {
		System.out.println(values); 
	}
	
	public String toString() {		
		return name;
	}
}